﻿#define _CRT_SECURE_NO_WARNINGS 1

//递归	--	递归就是函数⾃⼰调⽤⾃⼰。

//递就是递推的意思，归就是回归

//递归存在限制条件，当满⾜这个限制条件的时候，递归便不再继续。
//每次递归调⽤之后越来越接近这个限制条件。

////求n的阶乘 -- 递归
//#include <stdio.h>
////递归
//int Fact(int n)
//{
//	if (0 == n)
//		return 1;
//	else
//		return n * Fact(n - 1);
//}
////// 非递归
////int Fact(int n)
////{
////	int ret = 1;
////	for (int i = 1; i <= n; i++)
////	{
////		ret *= i;
////	}
////
////	return ret;
////}
////不考虑n太⼤的情况，n太⼤存在溢出
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int ret = Fact(num);
//
//	printf("ret = %d\n", ret);
//
//	return 0;
//}


//输⼊⼀个整数m，按照顺序打印整数的每⼀位。
//⽐如：
//输⼊：1234 输出：1 2 3 4
//输⼊：520 输出：5 2 0
//#include<stdio.h>
////void print(int num)
////{
////	if (num < 10)
////		printf("%d ", num);
////	else
////	{
////		print(num / 10);
////		printf("%d ", num % 10);
////	}
////}
//void print(int num)
//{
//	if (num > 9)
//		print(num / 10);
//	printf("%d ", num % 10);
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	print(num);
//
//	return 0;
//}


////求第n个斐波那契数 -- 1 1 2 3 5 8 13 21 34 55 89 144 ...
//#include<stdio.h>
////递归
//int Fib(int num)
//{
//	if (num <= 2)
//		return 1;
//	else
//		return Fib(num - 1) + Fib(num - 2);
//}
//////非递归
////int Fib(int num)
////{
////	int a = 1;
////	int b = 1;
////	int c = 1;
////
////	while (num >= 3)
////	{
////		c = a + b;
////		a = b;
////		b = c;
////		num--;
////	}
////
////	return c;
////}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int ret = Fib(num);
//
//	printf("%d\n", ret);
//
//	return 0;
//}








//写的题目

//#include<stdio.h>
////根据下面递归函数：调用函数Fun(2)
//int Fun(int n)
//{
//    if (n == 5)
//        return 2;
//    else
//        return 2 * Fun(n + 1);
//}
//
//int main()
//{
//    int ret = Fun(2);
//    printf("%d\n", ret);
//
//    return 0;
//}

////递归和非递归分别实现求第n个斐波那契数
////例如：
////输入：5  输出：5
////输入：10， 输出：55
////输入：2， 输出：1
//#include<stdio.h>
//////递归
////int Fib(int num)
////{
////	if (num <= 2)
////		return 1;
////	else
////		return Fib(num - 1) + Fib(num - 2);
////}
////非递归
//int Fib(int num)
//{
//	int num1 = 1;
//	int num2 = 1;
//	int num3 = 1;
//	while (num >= 3)
//	{
//		num3 = num1 + num2;
//		num1 = num2;
//		num2 = num3;
//		num--;
//	}
//	return num3;
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int ret = Fib(num);
//	printf("%d\n", ret);
//
//	return 0;
//}


////编写一个函数实现n的k次方，使用递归实现。
//#include<stdio.h>
//int my_pow(int n, int k)
//{
//	int mul = 1;
//	int i = 0;
//	for (i = 0; i < k; i++)
//	{
//		mul *= n;
//	}
//	return mul;
//}
//
//int main()
//{
//	int n = 0, k = 0;
//	scanf("%d %d", &n, &k);
//
//	int ret =my_pow(n, k);
//
//	printf("%d\n", ret);
//
//	return 0;
//}


////写一个递归函数DigitSum(n)，输入一个非负整数，返回组成它的数字之和
////例如，调用DigitSum(1729)，则应该返回1 + 7 + 2 + 9，它的和是19
////输入：1729，输出：19
//#include<stdio.h>
//int DigitSum(int num)
//{
//	if (num < 10)
//		return num;
//	else
//		return DigitSum(num / 10) + num % 10;
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int ret = DigitSum(num);
//
//	printf("ret = %d\n", ret);
//
//	return 0;
//}


////递归和非递归分别实现求n的阶乘（不考虑溢出的问题）
//#include<stdio.h>
//////递归
////int Fact(int n)
////{
////	int ret = 1;
////	if (0 == n)
////		return 1;
////	else
////		return n * Fact(n - 1);
////}
////非递归
//int Fact(int n)
//{
//	int ret = 1;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		ret *= i;
//	}
//	return ret;
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int ret = Fact(num);
//
//	printf("ret = %d\n", ret);
//	
//	return 0;
//}


//递归方式实现打印一个整数的每一位
#include<stdio.h>
void print(int num)
{
	if (num > 9)
		print(num / 10);
	printf("%d ", num % 10);
}

int main()
{
	int num = 0;
	scanf("%d", &num);

	print(num);

	return 0;
}













